package sun.superstring.polymorphise2;

public class Test1 {
    public static void main(String[] args) {
        // 目标：认识多态的代码
        // 1、多态的好处1：右边的对象是解耦合的。
        Animal a1 = new Tortoise();
        a1.run();
//        a1.shrinkHead(); // 报错，多态下不能调用子类独有的功能

        // 2、多态的好处2：父类类型的变量作为参数，可以接受一个子类对象
        // （go方法中，父类型Animal作为形参变量，可以接受Wolf和Tortoise类型的变量）
        Wolf w = new Wolf();
        go(w);

        Tortoise t = new Tortoise();
        go(t);
    }

    // 宠物游戏：所有动物都可以送给这个方法开始跑步
    public static void go(Animal w) {
        System.out.println("开始......");
        w.run();
//        a1.shrinkHead(); // 报错，多态下不能调用子类独有的功能

    }
}
